package com.example.NIO;

import java.nio.IntBuffer;

public class BasicBuffer {
    public static void main(String[] args) {
        // 举例说明 Buffer 的使用（简单说明）
        // 创建一个 Buffer，可以存放 5 个 int，也有 DoubleBuffer 等
        // IntBuffer.capacity = 5，IntBuffer.limit = 6
        IntBuffer intBuffer = IntBuffer.allocate(5);

        // 往 Buffer 存放数据
//        intBuffer.put(10);
//        intBuffer.put(11);
//        intBuffer.put(12);
//        intBuffer.put(10);
//        intBuffer.put(10);
        for (int i = 0; i < intBuffer.capacity(); i++) {
            // 可以在该处打断点，借此观察参数 capacity，limit，position，mark
            intBuffer.put(i * 2);
        }

        // 如何从 buffer 读取数据
        // 将 buffer 转换，读写切换标识，flip使 buffer 既可以读也可以写
        // 当前是写，切换了才可以 读
        /*
        public final Buffer flip() {
            limit = position; // 该数据不能超过 5
            position = 0;
            mark = -1;
            return this;
        }
         */
        intBuffer.flip();
//        intBuffer.position(1); 从指定position的位置开始读
//        intBuffer.limit(3);  限制可读取的范围，只能读取到 3
        while (intBuffer.hasRemaining()) {
            // 该 Buffer 维护了索引，每取一次索引 指针++
            // 输出
            //
            //2
            //4
            //6
            //8
            System.out.println(intBuffer.get());
        }
    }
}
